package com.example.xx.util;

import com.example.xx.config.QuanXianBuZuconfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.nio.file.AccessDeniedException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@ControllerAdvice
@ResponseBody
public class MyException {


    @ExceptionHandler(MethodArgumentNotValidException.class)
    // 将Result格式化成json字符串
    @ResponseBody
    public Result xx01(MethodArgumentNotValidException e){
        // 拿到我们校验失败的异常信息
        Map<String,String> mm = new HashMap<>();// 存放异常信息
        // 将读取到的异常信息存放在mm这个集合中
        // Field:属性  name  money  mima
        // 但凡有一个属性校验失败了 我就会往fieldErrors添加一条校验失败的信息
        List<FieldError> fieldErrors =e.getBindingResult().getFieldErrors();
        for(FieldError xx:fieldErrors){
            String field = xx.getField();// 属性名
            String defaultMessage = xx.getDefaultMessage();// 校验失败信息 message的值
            mm.put(field,defaultMessage);
        }
        e.printStackTrace();// 将web层抛出的异常捕获，并且打印在控制台(以后会把异常信息打印在文件中)
        return new Result(Code.NULL_ERR,mm,"校验失败");
    }

//    @ExceptionHandler(Exception.c lass)
//    public Result aa(Exception e) {
//        e.printStackTrace();
//        return new Result(Code.NULL_ERR, "服务器出问题了，稍后再试");
//    }


}
